package com.wolfword.crawler.server.service;

import java.util.List;
import java.util.Map;

import com.wolfword.crawler.server.entity.CrawlTaskEntity;

/**
 * 
 *
 * @author Server Zhang
 * @date 2018-01-11 10:54:52
 */
public interface CrawlTaskService {

	/**
	 * 插入数据
	 *
	 * @param entity
	 *            实体类
	 * @return 主键值
	 */
	long insert(CrawlTaskEntity entity);

	/**
	 * 批量插入数据
	 *
	 * @param list
	 *            实体类
	 */
	void batchInsert(List<CrawlTaskEntity> list);

	/**
	 * 根据主键更新数据 id
	 *
	 * @param entity
	 *            新数据
	 */
	Integer updateByPrimary(CrawlTaskEntity entity);

	/**
	 * 根据主键获取数据 id
	 *
	 * @param entity
	 *            查询条件
	 * @return 查询结果
	 */
	CrawlTaskEntity getByPrimary(CrawlTaskEntity entity);

	/**
	 * 根据查询条件获取一条记录
	 *
	 * @param conditions
	 *            查询条件
	 * @return 查询结果
	 */
	CrawlTaskEntity getOne(Map<String, Object> conditions);

	/**
	 * 根据查询条件查询
	 *
	 * @param conditions
	 *            查询条件
	 * @return 结果集
	 */
	List<CrawlTaskEntity> queryList(Map<String, Object> conditions);

	/**
	 * 查询所有数据
	 *
	 * @return 结果集
	 */
	List<CrawlTaskEntity> getAll();

	/**
	 * 获取待处理任务列表
	 * @param clientName
	 * @param clientIp
	 * @param clientPort
	 * @param taskCount
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	List<CrawlTaskEntity> listUncrawled(String clientName, String clientIp,
			Integer clientPort, Integer taskCount);

	/**
	 * 批量添加任务
	 * @param jsonStr 任务列表json串
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	void insertTask(String jsonStr);
	
	/**
	 * 批量修改任务
	 * @param jsonStr 任务列表json串
	 * @author ServerZhang
	 * @date 2018年1月12日
	 */
	void updateTask(String jsonStr);
	
	/**
	 * 上传子页面
	 * 将json以文件的形式保存在暂存目录
	 * @param jsonStr 任务列表json串
	 * @author ServerZhang
	 * @date 2018年1月11日
	 */
	void uploadSubpage(String jsonStr);
	
	/**
	 * 从缓存文件夹中批量添加任务
	 * @author ServerZhang
	 * @date 2018年1月19日
	 */
	void insertTask();

	/**
	 * list
	 * @param url
	 * @param parentUrl
	 * @param containStr
	 * @param status
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月24日
	 */
	List<CrawlTaskEntity> list(String url, String parentUrl, String containStr,
			Long rootUrlId, Integer status, Integer sortType,
			Integer pageIndex, Integer pageSize);

	/**
	 * 任务统计分析
	 * @param url
	 * @param sortType 排序：0默认，1邮箱，2电话，3职称
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @author ServerZhang
	 * @date 2018年1月24日
	 */
	List<CrawlTaskEntity> statistic(String url, Integer sortType,
			Integer pageIndex, Integer pageSize);

	/**
	 * 从缓存文件夹中批量修改任务
	 * @author ServerZhang
	 * @date 2018年1月26日
	 */
	void updateTask4File();

}
